iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
自我挑戰組

搞不懂資料的我,把 Query 下滿就對了?系列 第 22

Day 22 資料分析旅程支線:Metabase 提問 進階篇 (中) 關聯類型 (Join Type)

  • 分享至 

  • xImage
  •  

昨天提到「關聯 (Join)」和基本的關聯可以怎麼做。今天要來講更多一點,關於 關聯類型 的意義和該怎麼選擇。

關聯類型 (Join Type)

Fig. 1. Four types of joins: left, right, inner, and outer.

由上圖可以看到,SQL 的關聯類型主要有四種

  • Left outer join (LEFT JOIN)
  • Right outer join (RIGHT JOIN)
  • Inner join (INNER JOIN)
  • Full outer join (FULL JOIN)

而在提問中,Metabase 有提供我們選擇的是前面三種,所以在這邊我們先僅針對前三種做說明~

https://ithelp.ithome.com.tw/upload/images/20221007/20151720FNqEfG0uqz.png

接著,就讓我們來看圖說故事。

LEFT JOIN

https://ithelp.ithome.com.tw/upload/images/20221007/20151720g5hnZLB5qJ.png

如上圖,假設左邊的圈圈是你第一個選中要提問的表格,右邊的圈圈是你想關聯的資訊,
Left outer join 的概念就是 以左邊被選中的表格為 Base,在每一筆 列 / 紀錄 (Records) 上延伸欄位填入右邊表格所擁有的資訊。** 拿著我們所指定的 A 表格欄位,去查詢 B 表格中有相同值得欄位,找到該筆資料後,把資料拉進來,形成一個新表格。

昨天這篇學的例子來說,就是使用了 Left outer join:以 Orders 表格為基準,用 User ID 這個欄位的值,到 People 表格去查詢具有相同值得資料列,把資料拉進來,成為一份新的表格。

Outer 這邊代表的意義就是,這份新表格中,以左邊 (A) 表格為基底,加入右邊 (B) 表格的資訊,即使 B 表格中找不到對應的列 / 紀錄 (Records),A 表格原本的列也不會被刪掉,會被繼續保留在新表格中,只是沒有 B 欄位的值。再換句話說, A 表格中的所有列都會被保留,而 B 表格只會填入在 A 找得到的對應資訊。

RIGHT JOIN

https://ithelp.ithome.com.tw/upload/images/20221007/20151720rgVHt8XvEo.png

了解 LEFT JOIN 之後,RIGHT JOIN 應該就相對好理解了,一樣,我們來看圖說故事。
仔細看一下圖,剛剛畫實心的是左邊的圓,現在畫實心的是右邊的圓。如果左邊的圓是 A 表格,右邊的圓是 B 表格,意思也就是說變成以 B 表格為基底,將 A 表格的資料對照過來,所有 B 表格中的列都會被保留,而 A 表格只會填入用 B 的關聯欄位找得到的對應資訊。

INNER JOIN

https://ithelp.ithome.com.tw/upload/images/20221007/20151720VGIPoa1U59.png

最後,是 INNER JOIN,從圖就可以看出,只有兩個圓圈有交集的地方是實心。
也就是,只會挑出 A 和 B 的關聯值都找得到資料的 列 / 紀錄 (Records)。A 和 B 都可能有一些 Records 不會出現在 INNER JOIN 後的表格中。

在 Metabase 中,預設都是使用 LEFT JOIN,可以透過點擊圓圈 icon 來切換。

使用時機

大部分的時機,常用的主要是 LEFT JOIN 和 INNER JOIN。

  • 如果你需要保留,主要表格資料的所有列 / 紀錄 (Records),即使次要表格沒有,那就選擇 LEFT JOIN。
  • 如果你只需要兩個表格有交集的列 / 紀錄 (Records),則選擇 INNER JOIN。

以上,明天就可以來找幾個問題練習一下啦~

圖片來源:https://www.metabase.com/learn/images/sql-join-types/join-types.png


上一篇
Day 21 資料分析旅程支線:Metabase 提問 進階篇 (上)
下一篇
Day 23 資料分析旅程支線:Metabase 提問 進階篇 (中) 多重關聯 (Multiple Join)
系列文
搞不懂資料的我,把 Query 下滿就對了?25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言